home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / searchhe.i < prev    next >
Text File  |  1997-10-26  |  8KB  |  299 lines

  1. IMPLEMENTATION MODULE SearchHelp;
  2.  
  3. IMPORT Varnames;
  4. IMPORT CatTypes;
  5. IMPORT Strings;
  6. IMPORT ConfVars;
  7. IMPORT MagicStrings;
  8. FROM Void IMPORT v;
  9.  
  10. PROCEDURE IsValidSearch (str: ARRAY OF CHAR): BOOLEAN;
  11. BEGIN
  12.   (* Jetzt der eigentliche Test *)
  13.   WHILE ((str[0] = '*') OR (str[0] = '?')) & 
  14.          (MagicStrings.Length (str) > 0) DO
  15.     MagicStrings.Delete (str, 0, 1);
  16.     IF MagicStrings.Length (str) = 0
  17.     THEN
  18.       RETURN FALSE
  19.     END;
  20.   END;
  21.   RETURN TRUE
  22. END IsValidSearch;
  23.  
  24. PROCEDURE ValidateKonf (VAR konf: SearchRecordType): BOOLEAN;
  25.   VAR i: INTEGER;
  26. BEGIN
  27.   (* Nur bei grožer Suchbox: Flageinstellungen berprfen *)
  28.   
  29.   (* Erster Test: Suchstring leer und Textsuche *)
  30.   IF (LENGTH(konf.searchStr[0]) = 0) & konf.searchText
  31.   THEN
  32.     RETURN FALSE;
  33.   END;
  34.   IF ~konf.searchText & ~konf.statussearch
  35.   THEN
  36.     RETURN FALSE;
  37.   END;
  38.   IF ~konf.show & ~konf.change
  39.   THEN
  40.     (* Entweder Show oder Change mssen an sein *)
  41.     RETURN FALSE;
  42.   END;
  43.   IF konf.statussearch
  44.   THEN
  45.     IF konf.sSetBits + konf.sClearedBits = {}
  46.     THEN
  47.       RETURN FALSE;
  48.     END;
  49.     IF konf.change
  50.     & (konf.setBits + konf.clearBits = {})
  51.     THEN
  52.       RETURN FALSE;
  53.     END;
  54.   END;
  55.   
  56.   IF konf.searchText
  57.   THEN
  58.     FOR i := 0 TO suchstringAnz - 1 DO
  59.       IF ~IsValidSearch (konf.searchStr[i])
  60.       THEN
  61.         RETURN FALSE
  62.       END;
  63.     END;
  64.   END;
  65.   RETURN TRUE;
  66. END ValidateKonf;
  67.  
  68. PROCEDURE getsetKonf(set : BOOLEAN; nr : CARDINAL; VAR konf : SearchRecordType):BOOLEAN;
  69. (* Suchkonfiguration <nr> abrufen, FALSE -> nicht gesetzt *)
  70. VAR varname, 
  71.     varname2    : CatTypes.String255;
  72.     short       : ARRAY[0..1] OF CHAR;
  73.     z           : CARDINAL;
  74.     scrap       : INTEGER;
  75.     OneWasThere : BOOLEAN;
  76.     writeOk     : BOOLEAN;
  77. BEGIN   
  78.   OneWasThere := FALSE;
  79.   writeOk     := TRUE;
  80.   IF nr > 9 THEN RETURN FALSE END;
  81.  
  82.   short[0] := CHR(nr+ORD('0')); short[1] := 0C;
  83.   Strings.Concat (cSearchStr, short, varname, v.bool);
  84.   Strings.Concat (varname, '.', varname, v.bool);
  85.   FOR z := 0 TO 3 DO
  86.     short[0] := CHR(z+ORD('0'));
  87.     Strings.Concat (varname, short, varname2, v.bool);
  88.     IF set THEN
  89.       writeOk := writeOk & ConfVars.SetConfigString(varname2, konf.searchStr[z]);
  90.     ELSE
  91.       IF ConfVars.GetConfigString (varname2, konf.searchStr[z]) THEN
  92.         OneWasThere := OneWasThere OR (konf.searchStr[z][0] # 0C);
  93.       ELSE
  94.         konf.searchStr[z] := '';
  95.       END;
  96.     END;
  97.   END;
  98.  
  99.   short[0] := CHR(nr+ORD('0'));
  100.   Strings.Concat (cSearchLogical, short, varname, v.bool);
  101.   Strings.Concat (varname, '.', varname, v.bool);
  102.   FOR z := 0 TO 2 DO
  103.     short[0] := CHR(z+ORD('0'));
  104.     Strings.Concat (varname, short, varname2, v.bool);
  105.     IF set THEN
  106.       writeOk := writeOk & ConfVars.SetConfigInt(varname2, konf.verkn[z]);
  107.     ELSE
  108.       IF ConfVars.GetConfigInt (varname2, konf.verkn[z]) THEN
  109.         OneWasThere := TRUE
  110.       ELSE
  111.         konf.verkn[z] := vUND
  112.       END;
  113.     END;
  114.   END;
  115.  
  116.   short[0] := CHR(nr+ORD('0'));
  117.   Strings.Concat (cSearchLocation, short, varname, v.bool);
  118.   Strings.Concat (varname, '.', varname, v.bool);
  119.   FOR z := 0 TO 3 DO
  120.     short[0] := CHR(z+ORD('0'));
  121.     Strings.Concat (varname, short, varname2, v.bool);
  122.     IF set THEN
  123.       writeOk := writeOk & ConfVars.SetConfigInt(varname2, konf.wo[z]);
  124.     ELSE
  125.       IF ConfVars.GetConfigInt (varname2, konf.wo[z]) THEN
  126.         OneWasThere := TRUE
  127.       ELSE
  128.         konf.wo[z] := sUEBERALL;
  129.       END;
  130.     END;
  131.   END;
  132.  
  133.   short[0] := CHR(nr+ORD('0'));
  134.  
  135.   Strings.Concat (cSearchShow, short, varname, v.bool);
  136.   IF set THEN
  137.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.show);
  138.   ELSE
  139.     IF ConfVars.GetConfigBool(varname, konf.show) THEN
  140.       OneWasThere := TRUE
  141.     ELSE
  142.       konf.show := TRUE;
  143.     END;
  144.   END;
  145.  
  146.   Strings.Concat (cSearchChange, short, varname, v.bool);
  147.   IF set THEN
  148.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.change);
  149.   ELSE
  150.     IF ConfVars.GetConfigBool(varname, konf.change) THEN
  151.       OneWasThere := TRUE
  152.     ELSE
  153.       konf.change := FALSE;
  154.     END;
  155.   END;
  156.  
  157.   Strings.Concat (cSearchStatus, short, varname, v.bool);
  158.   IF set THEN
  159.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.statussearch);
  160.   ELSE
  161.     IF ConfVars.GetConfigBool(varname, konf.statussearch) THEN
  162.       OneWasThere := TRUE
  163.     ELSE
  164.       konf.statussearch := FALSE;
  165.     END;
  166.   END;
  167.   
  168.   Strings.Concat (cSearchAsk, short, varname, v.bool);
  169.   IF set THEN
  170.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.ask);
  171.   ELSE
  172.     IF ConfVars.GetConfigBool(varname, konf.ask) THEN
  173.       OneWasThere := TRUE
  174.     ELSE
  175.       konf.ask := TRUE;
  176.     END;
  177.   END;
  178.  
  179.   Strings.Concat (cSearchText, short, varname, v.bool);
  180.   IF set THEN
  181.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.searchText);
  182.   ELSE
  183.     IF ConfVars.GetConfigBool(varname, konf.searchText) THEN
  184.       OneWasThere := TRUE
  185.     ELSE
  186.       konf.searchText := TRUE;
  187.     END;
  188.   END;
  189.  
  190.   Strings.Concat (cSearchCasesensitive, short, varname, v.bool);
  191.   IF set THEN
  192.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.gross);
  193.   ELSE
  194.     IF ConfVars.GetConfigBool(varname, konf.gross) THEN
  195.       OneWasThere := TRUE
  196.     ELSE
  197.       konf.gross := TRUE;
  198.     END;
  199.   END;
  200.  
  201.   Strings.Concat (cNoGroupBorder, short, varname, v.bool);
  202.   IF set THEN
  203.     writeOk := writeOk & ConfVars.SetConfigBool(varname, konf.groupsearch);
  204.   ELSE
  205.     IF ConfVars.GetConfigBool(varname, konf.groupsearch) THEN
  206.       OneWasThere := TRUE
  207.     ELSE
  208.       konf.groupsearch := FALSE;
  209.     END;
  210.   END;
  211.  
  212.   Strings.Concat (cSearchSetBits, short, varname, v.bool);
  213.   IF set THEN
  214.     writeOk := writeOk & ConfVars.SetConfigInt(varname, INTEGER(konf.sSetBits));
  215.   ELSE
  216.     IF ConfVars.GetConfigInt(varname, scrap) THEN
  217.       konf.sSetBits := BITSET(scrap);
  218.       OneWasThere := TRUE
  219.     ELSE
  220.       konf.sSetBits := {};
  221.     END;
  222.   END;
  223.  
  224.   Strings.Concat (cSearchClearedBits, short, varname, v.bool);
  225.   IF set THEN
  226.     writeOk := writeOk & ConfVars.SetConfigInt(varname, INTEGER(konf.sClearedBits));
  227.   ELSE
  228.     IF ConfVars.GetConfigInt(varname, scrap) THEN
  229.       konf.sClearedBits := BITSET(scrap);
  230.       OneWasThere := TRUE
  231.     ELSE
  232.       konf.sClearedBits := {};
  233.     END;
  234.   END;
  235.  
  236.   Strings.Concat (cSearchToSetBits, short, varname, v.bool);
  237.   IF set THEN
  238.     writeOk := writeOk & ConfVars.SetConfigInt(varname, INTEGER(konf.setBits));
  239.   ELSE
  240.     IF ConfVars.GetConfigInt(varname, scrap) THEN
  241.       konf.setBits := BITSET(scrap);
  242.       OneWasThere := TRUE
  243.     ELSE
  244.       konf.setBits := {};
  245.     END;
  246.   END;
  247.  
  248.   Strings.Concat (cSearchToClearBits, short, varname, v.bool);
  249.   IF set THEN
  250.     writeOk := writeOk & ConfVars.SetConfigInt(varname, INTEGER(konf.clearBits));
  251.   ELSE
  252.     IF ConfVars.GetConfigInt(varname, scrap) THEN
  253.       konf.clearBits := BITSET(scrap);
  254.       OneWasThere := TRUE
  255.     ELSE
  256.       konf.clearBits := {};
  257.     END;
  258.   END;
  259.  
  260.   IF set THEN 
  261.     RETURN writeOk;
  262.   ELSE
  263.     RETURN OneWasThere;
  264.   END;
  265. END getsetKonf;
  266.  
  267. PROCEDURE getKonf(nr : CARDINAL; VAR konf : SearchRecordType):BOOLEAN;
  268. (* Suchkonfiguration <nr> abrufen, FALSE -> nicht gesetzt *)
  269. BEGIN
  270.   RETURN getsetKonf(FALSE, nr, konf);
  271. END getKonf;
  272.  
  273. PROCEDURE setKonf(nr : CARDINAL; konf : SearchRecordType):BOOLEAN;
  274. (* Suchkonfiguration <nr> setzen *)
  275. BEGIN
  276.   RETURN getsetKonf(TRUE, nr, konf);
  277. END setKonf;
  278.  
  279. BEGIN
  280.   WITH suchVar DO
  281.     searchStr[0] := '';  searchStr[1] := '';  searchStr[2] := '';  searchStr[3] := '';
  282.     verkn[0] := vUND;
  283.     verkn[1] := vUND;
  284.     verkn[2] := vODER;
  285.     wo[0]    := sUEBERALL;
  286.     wo[1]    := sUEBERALL;
  287.     wo[2]    := sUEBERALL;
  288.     wo[3]    := sUEBERALL;
  289.   
  290.     show         := TRUE;
  291.     change       := FALSE;
  292.     statussearch := FALSE;
  293.     ask          := TRUE;
  294.     searchText   := TRUE;
  295.     gross        := TRUE;
  296.     sSetBits := {}; sClearedBits := {}; setBits := {}; clearBits := {};
  297.   END;
  298. END SearchHelp.
  299.